package Server;

import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;

import GameState.GameState;


public interface GameServerInterface extends  Remote, Serializable {

/*
 * Methods for managing players
 */	
	
	
	/**
	 * Adds a new player to the game
	 */
	 void AddPlayer(Player p) throws RemoteException;
	 
	 /**
		 * Removes a new player to the game
		 */	 
	 void RemovePlayer(Player p) throws RemoteException; 
	
	 
	 /*
	  * Method for Allowing Players to control their ships
	  */
	 
	 void playerRequest(Request playerRequest, Player player) throws RemoteException;
	 
	 
	 GameState getGameState() throws RemoteException;

	 
	 
	 /*
	  * 
	  * Misc
	  * 
	  */
	 
	 
	 /**
		 * 
		 * Gets back the number of player in the game
		 * 
		 * @return number of player in the game
		 * @throws RemoteException Throw this exception if there is a problem with the remote object over the network 
		 */
		int getNumberOfPlayers() throws RemoteException;
		
		
		/**
		 * 
		 * Get back the number of ships in the game 
		 * 
		 * (No_of_Player's_ships + No_of_NCP's_ships)
		 * 
		 * @return number of ships in the game
		 * @throws RemoteException Throws this exception if the is a problem with rmi over the network
		 */
		int getNumberOfShips() throws RemoteException;
		

	
}
